// const buffer = new ArrayBuffer(8);
// const uint8 = new Uint8Array(buffer);
// const mask1 = new Uint8Array([3, 3, 3, 3, 3, 3, 3, 3]);

/*
0,0 : 0     1,0 : 0     2,0 : 0
0,1 : 3     1,1 : 3     2,1 : 3
0,2 : 1     1,2 : 1     2,2 : 1
0,3 : 0     1,3 : 0     2,3 : 0
0,4 : 3     1,4 : 3     2,4 : 3
0,5 : 1     1,5 : 1     2,5 : 1

3,0 : 4     4,0 : 4     5,0 : 4
3,1 : 2     4,1 : 2     5,1 : 2
3,2 : 5     4,2 : 5     5,2 : 5
3,3 : 4     4,3 : 4     5,3 : 4
3,4 : 2     4,4 : 2     5,4 : 2
3,5 : 5     4,5 : 5     5,5 : 5

6,0 : 0     0,6 : 6
6,1 : 1     1,6 : 6
6,2 : 2     2,6 : 6
6,3 : 3     3,6 : 2
6,4 : 4     4,6 : 2
6,5 : 5     5,6 : 2
6,6 : 6     6,6 : 6
*/

/**
 * Switch Case
 * @param {uint} p prev
 * @param {uint} n next
 * @returns {uint} c curr
 */
const sc = (p, n) => {
    switch (p) {
        case 0:
        case 1:
        case 2:
            switch (n) {
                case 0:
                case 3:
                    return 0;
                case 2:
                case 5:
                    return 1;
                case 1:
                case 4:
                    return 3;
                case 6:
                    return 6;
            }
        case 3:
        case 4:
        case 5:
            switch (n) {
                case 0:
                case 3:
                    return 4;
                case 2:
                case 5:
                    return 5;
                case 1:
                case 4:
                case 6:
                    return 2;
            }
        case 6:
            return n;
    }
}